package com.my.study.algorithm.leetcode;

import java.util.Stack;

/**
 * <p>
 *     用两个栈实现一个队列。
 *     队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，
 *     分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead 操作返回 -1 )
 * </p>
 * 
 * @author Carlos
 * @version 1.0.0
 * @date 2023/1/2 15:56
 */
public class CQueue {

    private Stack<Integer> inStack;
    private Stack<Integer> outStack;


    public CQueue() {
        inStack = new Stack<>();
        outStack = new Stack<>();
    }

    public void appendTail(int value) {
        inStack.push(value);
    }

    public int deleteHead() {
        if (!outStack.isEmpty()) {
            return outStack.pop();
        }
        else {
            while (!inStack.isEmpty()) {
                outStack.push(inStack.pop());
            }
        }
        
        return outStack.isEmpty() ? -1 : outStack.pop();
    }
}
